Oracle 存储过程教程
PROCEDURE DotNetPagination(
Private Sub gridbind(ByVal pindex As Integer, ByVal psql As String, Optional ByVal psize As Integer = 10)
)
v_sql varchar2(1000);
Pindex in number,
Dim cmd As New OracleClient.OracleCommand()
execute immediate v_sql into v_count;
End If
conn.ConnectionString = "Password=gzdlgis;User ID=gzdlgis;Data Source=gzgis"
cmd.Parameters.Add("psql", Data.OracleClient.OracleType.VarChar).Value = psql '"select rownum rn,t.* from cd_ssxl t"
以下是在.net中调用Oracle分页存储过程的步骤。
cmd.Parameters.Add("psqlcount", OracleType.VarChar).Value = psql
);
--***************************************************************************************
--Psql := 'select rownum rn,t.* from cd_ssxl t' ; --要求必须包含rownum字段
---------------------------------------------------------------------------------------
'------------------------------------------------------------------------------------
Psqlcount in varchar2,
Dim dr As OracleClient.OracleDataReader
-- Created : 2004-12-13 13:30:30
Pcount out number,
-- Author : good_hy
cmd.CommandText = "DotNot.DotNetPagination"
v_cur out type_cur
--**************************************************************************************
End Sub
cmd.Parameters.Add("pindex", Data.OracleClient.OracleType.Number).Value = pindex
v_sql := 'select count(*) from (' || Psqlcount || ')';
Pcount := ceil(v_count/Psize);
dr = cmd.ExecuteReader()
'------------------------------------------------------------------------------------
Dim conn As New OracleClient.OracleConnection()
Begin
-- Purpose :
Me.DataGrid1.DataSource = dr
execute immediate v_sql into v_prcount;
v_Phei number;
End Sub
Me.DataGrid1.AllowCustomPaging = True
open v_cur for v_sql;
Response.Write("总计页数 " & cmd.Parameters("pcount").Value)
cmd.CommandType = CommandType.StoredProcedure
由于设想在.net中把复杂的sql语句生成,所以在存储过程中没有去考虑生成sql语句的问题。
Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
v_sql VARCHAR2(1000);
Pindex in number, --分页索引
cmd.CommandText = "DotNot.DotNetPageRecordsCount"
cmd.Parameters.Add("psize", Data.OracleClient.OracleType.Number).Value = psize
procedure DotNetPageRecordsCount(
procedure DotNetPageRecordsCount(
create or replace package DotNet is
cmd.Parameters.Add("pcount", Data.OracleClient.OracleType.Number).Direction = ParameterDirection.Output
cmd.ExecuteNonQuery()
Psize in number,
cmd.Parameters.Add("prcount", OracleType.Number).Direction = ParameterDirection.Output
--**************************************************************************************
Psql in varchar2,
end DotNot;
Me.DataGrid1.PageSize = psize
v_Phei := Pindex * Psize + Psize;
复制代码 代码如下:
Me.DataGrid1.AllowPaging = True
'------------------------------------------------------------------------------------
Oracle分页存储过程的思路于sqlserver的思路是一样的,但是我这里做了点改动,在因为Oracle的语法和规则的不同所以,Oracle分页存储过程看上去有点不一样。见笑,见笑!
Prcount out number --返回记录总数
'------------------------------------------------------------------------------------
------------------------------------------------------------显示任意页内容
TYPE type_cur IS REF CURSOR; --定义游标变量用于返回记录集
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
)
------------------------------------------------------------取分页总数
Dim psql As String = "select rownum rn,t.* from cd_ssxl t"
conn.Open()
----------------------------------------------------------------------------------------
dr.Close()
gridbind(e.NewPageIndex, psql, 20)
v_Plow := v_Phei - Psize + 1;
conn.Close()
as
v_count number;
Prcount out number
);
以下是在Oracle中实现的分页存储过程。
v_sql := 'select * from (' || Psql || ') where rn between ' || v_Plow || ' and ' || v_Phei ;
End Sub
在Oracle的存储过程中返回记录集,需要用到游标变量,Oracle不能像sqlserver那样可以直接返回一个记录集。
PROCEDURE DotNetPagination(
begin
rotected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Me.DataGrid1.VirtualItemCount = cmd.Parameters("prcount").Value
cmd.Connection = conn
v_cur out type_cur --返回当前页数据记录
Me.DataGrid1.DataBind()
Psize in number, --页面大小
v_sql := 'select count(*) from (' || Psql || ')';
cmd.Parameters.Clear()
End DotNetPagination;
cmd.Parameters.Add("v_cur", Data.OracleClient.OracleType.Cursor).Direction = ParameterDirection.Output
Me.DataGrid1.CurrentPageIndex = e.NewPageIndex
gridbind(0, psql, 20)
v_prcount number;
v_Plow number;
If Not Page.IsPostBack Then
复制代码 代码如下:
Pcount out number, --返回分页总数Psqlcount in varchar2, --产生dataset的sql语句
Dim psql As String = "select rownum rn,t.* from cd_ssxl t"
create or replace package body DotNet is
在.net调用返回记录集的存储过程,需要用到datareader,但是datareader不支持在datagrid中的分页,因此需要利用datagrid自定义分页功能。
end DotNot;
end DotNetPageRecordsCount;
AS
Prcount := v_prcount; --返回记录总数
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/sql/oracle/3136.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
是因为scan的IP问题补占用
时间:2021-01-20
-
还你一个干净的model 2、功
时间:2021-01-20
-
既然 ROWNUM 列并不是真实存
时间:2021-01-20
-
Real Application Clusters
时间:2021-01-20
-
在tools-preferences-connection(
时间:2021-01-20
-
Windows Sever 2012下Oracle 12c安
时间:2021-01-10
-
Oracle安装监听器错误的解
时间:2021-01-07
-
oracle远程连接服务器数据
时间:2021-01-07
热门文章
-
Oracle存储过程编程详解
时间:2020-12-07
-
Azure Queue Storage 基本用法 Azure Storage 之
时间:2020-12-26
-
win10下oracle 11g安装图文教程
时间:2020-12-25
-
oracle 数据库学习 基本结构介绍
时间:2020-12-13
-
Azure File Storage 基本用法 Azure Storage 之 F
时间:2020-12-26
-
windows使用sqlpus连接oracle 数据库的教程图
时间:2020-12-25
-
Window下Oracle Database 11g 发行版2安装教程
时间:2020-12-29
-
Oracle解锁的方式介绍
时间:2020-12-14
-
Oracle 12c Study之Installer Oracle
时间:2021-01-06
-
linux下oracle设置开机自启动实现方法
时间:2020-12-13
